In order to support cloud computing services, various computing resources, such as processing power and storage capacity, need to be allocated to optimize latency, efficiency and load balance within the system. Furthermore, because cloud computing services often include storing and serving user data (e.g., messages, posts, pictures, videos, audio, and the like) the resource allocation often involves replicating a user's data/task into multiple copies (referred to herein as user data replicas) and placing the user data replicas in different clusters to increase/optimize service quality. Requests related to a user's data can be served from any one of the data replica based on the current state of the system. As a result, user data replication and placement can be a very efficient way to allocate system resource to improve performance, efficiency, and load balance of a cloud computer service.
However, the computational complexity of determining user data replica placement is very high, in fact the computation complexity grows exponentially with respect to the number of user data replicas per user. Accordingly, a need exists for methods to reduce the computational complexity of user data replica placement in cloud computing systems.